//工厂模式
// function Person(name) {
//     const obj = new Object()
//     obj.name = name
//     obj.say = function() {
//         console.log(this.name)
//     }

//     return obj
// }

// const kaho = Person('kaho')

// kaho.say()

//构造函数模式
// function Person(name) {
//     this.name = name
//     this.say = function() {
//         console.log(this.name)
//     }
// }

// const kaho = new Person('kaho')
// kaho.say()

//原型模式
// const Person = function() {}
// Person.prototype.name = 'kaho'
// Person.prototype.say = function() {
//     console.log(this.name)
// }

// const kaho = new Person()
// kaho.say()

//构造函数和原型组合模式
// const Person = function(name) {
//     this.name = name
// }
// Person.prototype.say = function() {
//     console.log(this.name)
// }

// const kaho = new Person('kaho')
// kaho.say()

//动态原型模式
function Person(name) {
    this.name = name
    if(typeof(Person.prototype.say) != 'function') {
        Person.prototype.say = function() {
            console.log(this.name)
        }
    }
}

const kaho = new Person('kaho')
kaho.say()